<?php
class Chinese {
    static function SBC2DBC($input_str,$encoding='utf-8') {
        $encoding=strtolower($encoding);

        $len=strlen($input_str);
        $output_str='';
        for ($i=0;$i<$len;$i++) {
            if (($len-$i)<3) {
                $output_str.=substr($input_str,$i);
                break;
            }
            if ($input_str[$i]=="\xEF"
            && ($input_str[$i+1]=="\xBC" || $input_str[$i+1]=="\xBD")
            ) {
                $s2=$input_str[$i+1];
                $s3=ord($input_str[$i+2]);
                if ($s2=="\xBC" && $s3>=161 && $s3<161+26) {//全角大写
                    $output_str.=chr($s3-96);
                    $i+=2;
                } else if ($s2=="\xBD" && $s3>=129 && $s3<129+26) {//全角小写
                    $output_str.=chr($s3-47);
                    $i+=2;
                } else if ($s2=="\xBC" && $s3>=130 && $s3<130+24) {//后10个是全角数字,前面是一些字符
                    $output_str.=chr($s3-96);
                    $i+=2;
                } else {
                    $output_str.=$input_str[$i];
                }
            } else {
                $output_str.=$input_str[$i];
            }
        }
        return $output_str;
    }
}
echo Chinese::SBC2DBC("１1２2３3４4５5中文OK吗？测试测试阿哈哈６6７８９０＃＄％＆＇（）＊＋，－．ＡＢＣＤＵ");
die;
//＃＄％＆
for ($i=32;$i<256;++$i) {
    $index=$i;
    echo chr($index);
}
for ($i=0;$i<256;++$i) {
    $index=$i;
    echo "\xEF\xBC".chr($index);
}
die;
//全角大写
for ($i=0;$i<26;++$i) {
    $index=161+$i;
    "\xEF\xBC".chr($index);
}

//全角小写
for ($i=0;$i<26;++$i) {
    $index=129+$i;
    echo "\xEF\xBD".chr($index);
}

//全角数字
for ($i=0;$i<10;++$i) {
    $index=144+$i;
    echo "\xEF\xBC".chr($index);
}
